import { fetchCartInfo, addCart, mutateItemNum, mutateItemSelected, deleteCartItem } from '@api'
import { Toast } from 'vant'
export default {
  namespaced: true,
  state: {
    // 购物车中的商品
    items: [],
    // 购物车中商品件数
    number: 0,
    // 购物车商品总价格
    price: 0
  },
  mutations: {
    INIT_CART (state, { items, number, price }) {
      // 初始化购物车数据
      state.items = items
      state.number = number
      state.price = price
    }
  },
  actions: {
    DELETE_ITEM ({ commit }, params = {}) {
      // 删除购物车商品
      deleteCartItem(params).then(res => {
        if (res.data.code === 0) {
          commit('INIT_CART', {
            items: res.data.data.items,
            number: res.data.data.number,
            price: res.data.data.price
          })
        }
        if (res.data.code === 700) {
          commit('INIT_CART', {
            items: [],
            number: 0,
            price: 0
          })
        }
      })
    },
    MUTATE_SELECTED ({ commit }, params = {}) {
      // 修改商品选中状态
      mutateItemSelected(params).then(res => {
        if (res.data.code === 0) {
          commit('INIT_CART', {
            items: res.data.data.items,
            number: res.data.data.number,
            price: res.data.data.price
          })
        }
      })
    },
    MUTETA_NUM ({ commit }, params = {}) {
      // 修改商品 购买数量
      mutateItemNum(params).then(res => {
        if (res.data.code === 0) {
          commit('INIT_CART', {
            items: res.data.data.items,
            number: res.data.data.number,
            price: res.data.data.price
          })
        }
      })
    },
    FETCH_CART_INFO ({ commit }, params = {}) {
      // 发送请求获取购物车数据
      fetchCartInfo(params).then(res => {
        if (res.data.code === 0) {
          commit('INIT_CART', {
            items: res.data.data.items,
            number: res.data.data.number,
            price: res.data.data.price
          })
        }
      })
    },
    ADD_CART ({ commit }, params = {}) {
      // 加入购物车
      addCart(params).then(res => {
        // 弹出提示
        if (res.data.code === 0) {
          Toast('加入购物车成功')
          commit('INIT_CART', {
            items: res.data.data.items,
            number: res.data.data.number,
            price: res.data.data.price
          })
        }
      })
    }
  }
}
